package Hot100;

/**
 * @author zhangmin
 * @create 2021-12-20 11:04
 */
public class maxArea11 {

    /** 11. 盛最多水的容器
     * 给你 n 个非负整数 a1，a2，...，an，每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线，垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。
     * 找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。
     * 双指针：左右指针移动依据：哪个指针对应的高度小就移动哪个，由于容纳的水量是由  <两个指针指向的数字中较小值∗指针之间的距离>决定的。
     * 如果我们移动数字较大的那个指针，那么前者「两个指针指向的数字中较小值」不会增加，后者「指针之间的距离」会减小，那么这个乘积会减小。
     * */
    public int maxArea(int[] height) {
        int left=0,right=height.length-1;
        int res=0;
        while (left<right){
            if (height[left]<=height[right]){
                int area=height[left]*(right-left);
                res=Math.max(res,area);
                left++;
            }else {
                int area=height[right]*(right-left);
                res=Math.max(res,area);
                right--;
            }
        }
        return res;
    }

}
